package com.googlecode.maratische.google.model;

import java.io.File;

import org.apache.log4j.Logger;

import com.googlecode.maratische.google.BaseException;
import com.googlecode.maratische.google.DaoAction;

public class CommandRemoveReadedItemMedia extends Command {
	static Logger logger = Logger.getLogger(CommandRemoveReadedItemMedia.class.getName());

	protected CommandRemoveReadedItemMedia() {
	}
	
	@Override
	public String getType() {
		return Commands.RemoveReadedItemMedia.toString();
	}
	
	@Override
	public Integer getPriority() {
		return 10;
	}

	@Override
	public boolean execute(DaoAction daoAction) {
		Integer itemId = getInteger1();
		String folderName = daoAction.getItemDao().getLocalMediaFolder(itemId.toString());
		File mediaFolder = new File(folderName); 
		if (mediaFolder.isDirectory()) {
//			logger.info(folderName);
			File[] files = mediaFolder.listFiles();
			if (files != null && files.length>0) {
				for (File file : files) {
					if (!file.delete()) {
						/**
						 * TODO Ошибка удаления файла!
						 */
						logger.error("Ошибка удаления файла!"+file.getAbsolutePath());
						return false;
					}
				}
			}
			if (!mediaFolder.delete()) {
				/**
				 * TODO Ошибка удаления папки!
				 */
				;
				logger.error("Ошибка удаления папки!"+mediaFolder.getAbsolutePath());
				return false;
			}
		}
		try {
			if (!daoAction.getItemDao().remove(itemId)) {
				/**
				 * TODO Ошибка удаления записи!
				 */
				logger.error("Ошибка удаления записи!");
				return false;
			}
		} catch (BaseException e) {
			logger.error("Ошибка удаления записи!");
			return false;
		}
		return true;
	}

}
